package cn.wolfcode.rbac.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @author xiahuihui
 * #Description CheckLoginInterceptor
 * #Date: 2022/7/4 14:50
 * 拦截器：可以通过拦截器对用户发送的请求进行拦截，对用户的请求进行验证
 *        如果验证通过，对请求放行
 *        如果验证不通过，对请求拦截
 * 登录认证的拦截器
 *  1.拦截器类实现接口HandlerInterceptor
 *  2.重写preHandle方法，用户发送请求时，自动执行preHandle对请求拦截
 *      对请求验证，验证通过，返回true，放行请求;验证不通过，返回false,拦截请求。
 */
public class CheckLoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //对拦截的请求进行验证,从session中获取登录对象
        HttpSession session = request.getSession();
        Object login = session.getAttribute("login");
        //判断登录对象是否为null,为null未登录，跳转登录界面，拦截请求；不为null，放行请求
        if(login == null){
            //未登录,重定向到登录界面
             response.sendRedirect("/login.jsp");
             return false;
        }
        //已登录
        return true;
    }
}
